/**
 * RevenueSourceBO.java
 * Created on March 21, 2007, 6:10 PM
 *
 *
 */

package edu.byu.isys413.jjenkins.data;

/**
 * This abstract class is extended by all revenue sources subclasses. This
 * class will be developed futher as we program the revenue source subclasses
 * and find out what else it needs.
 *
 * @author      Jeff Jenkins
 * @version     1.0
 */

public abstract class RevenueSourceBO extends BusinessObject {
    
    
    /** Creates a new instance of RevenueSourceBO */
    public RevenueSourceBO() {
    }
       
    /**
     * price of the revenue source
     */
    private double price;
    /**
     * description of the revenue source
     */
    private String description;
    /**
     * quantity of the revenue source
     */
    private double quantity;   
    /**
     * type of the revneue source
     */
    private String type;
    
    

    /**
     * The method used to derive the description may vary from revenue source
     * to revenue source. Therefore any class that extends this class must
     * implement this method. (For example: Sale revenue source would access the
     * conceptual product to get the description while backup revenue source
     * already contains the description. NOTE: once you calculate the description you
     * must set the quantity variable in teh RevenueSource Class.
     * 
     * 
     * @return String description
     */
    
    public abstract String createDescription();

    /**
     *  The price must be set in the revenueSource object. This is done so if the
     * price of a Product or conceptual rental changes, the price on the
     * transaction will not change.In this method you must caluculate the price 
     * for the revenue source and set teh price attibute in the revenueSourceBO
     * 
     * 
     * @return double price.
     */
    public abstract double calcPrice();    

    /** This method gets the type of the revenueSource
     *
     * @return String revenue source type
     */
    public String getType() {
        return type;
    }
    /**
     * This method sets the type of the revenueSource
     * @param type the type of the revenue source
     */
    public void setType(String type) {
        this.type = type;
    }

    /**
     * the method gets the price 
     * @return price of revenue source
     */
    public double getPrice() {
        return price;
    }

    /**
     * this method sets the price
     * @param price price of revenue source
     */
    public void setPrice(double price) {
        this.price = price;
    }

    /**
     * the method gets teh description
     * @return description of revenue source
     */
    public String getDescription() {
        return description;
    }

    /**
     * sets the description of the revenue souce
     * @param description revenue souce description
     */
    public void setDescription(String description) {
        this.description = description;
    }

    /**
     * gets teh quantity of the revenue source
     * @return revenue souce description
     */
    public double getQuantity() {
        return quantity;
    }

    /**
     * sets the quantity of the revenue souce
     * @param quantity quantity of revenue source
     */
    public void setQuantity(double quantity) {
        this.quantity = quantity;
    }
    
    
    

    
    
    
    
    
}
